// 因为接口只会在程序首次加载运行的时候返回basic_info.theme_color数据后执行，
// 换言之，通过 发布-订阅 的方式来设置皮肤只会发生在第一次接口请求成功之后，后期都不会再执行；
// 因此，我们需要通过一个Model模型对象将数据存储起来，后面的皮肤设值操作都从该model对象中获取；

/**
 * 主题对象：是一个单例
 * @param {*} themeBaseColor 主色值
 * @param {*} subColor 辅色值
 */

function themeModel(themeBaseColor, subColor, reset = false) {
  if (typeof themeModel.instance == 'object' && !reset) {
    return themeModel.instance
  }

  this.themeBaseColor = themeBaseColor
  this.subColor = subColor
  if (this.themeBaseColor || this.subColor) {
    themeModel.instance = this
  }
  return this
}

module.exports = {
  save: function(themeBaseColor = '#ffc11e', subColor = '#ffc11e') {
    return new themeModel(themeBaseColor, subColor, true)
  },

  get: function() {
    return new themeModel()
  }
}